জাভাস্ক্রিপ্টের "use strict"
একটি বিশেষ ডিরেকটিভ, যা কোডের মধ্যে কঠোর (strict) মোড চালু করে। এটি জাভাস্ক্রিপ্টের কিছু পুরনো বা অবাঞ্ছিত বৈশিষ্ট্য নিষ্ক্রিয় করে, যেমন ভুল সিঙ্কট্যাক্স বা অদ্ভুত আচরণ, যা কোডের সঠিকতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। use strict
এর মাধ্যমে কোডের কমপ্লায়েন্স এবং মানের উন্নতি হয়, এবং কোড আরো নিরাপদ হয়।
use strict
ব্যবহারের উদ্দেশ্যeval()
বা arguments
এ কাজ করার ক্ষেত্রে সতর্কতা।use strict
ব্যবহারের স্থানuse strict
সাধারণত দুটি ভাবে ব্যবহার করা যায়:
ফাংশনের মধ্যে: আপনি যদি শুধুমাত্র একটি নির্দিষ্ট ফাংশনে strict mode
চালু করতে চান, তাহলে আপনি সেই ফাংশনের প্রথম লাইনে "use strict";
লিখতে পারেন।
function myFunction() {
"use strict";
let x = 3.14; // বৈধ কোড
}
গ্লোবাল স্কোপে: যদি আপনি পুরো স্ক্রিপ্টে strict mode
চালু করতে চান, তাহলে আপনি স্ক্রিপ্টের প্রথম লাইনে "use strict";
উল্লেখ করবেন।
"use strict";
let x = 3.14; // বৈধ কোড
use strict
এর বৈশিষ্ট্যstrict mode
এ, আপনি যদি কোনো ভেরিয়েবল ডিক্লেয়ার না করে ব্যবহার করেন, তাহলে তা ত্রুটি (error) সৃষ্টি করবে। যেমন:
"use strict";
x = 10; // ReferenceError: x is not defined
এখানে, x
কে ডিক্লেয়ার না করে ব্যবহার করা হয়েছে, যা strict mode এ ত্রুটি সৃষ্টি করবে।
strict mode
এ, একই ফাংশনে ডুপ্লিকেট প্যারামিটার নাম ব্যবহার করা যাবে না। যেমন:
"use strict";
function myFunction(a, a) { // SyntaxError: Duplicate parameter name not allowed in this context
return a + a;
}
এখানে, ফাংশনে একই প্যারামিটার নাম দুবার দেওয়া হয়েছে, যা strict mode
এ গ্রহণযোগ্য নয়।
eval()
এবং arguments
এর ব্যবহারeval()
এবং arguments
এসব বিশেষ কিওয়ার্ড strict mode
এ কিছু সীমাবদ্ধতার সম্মুখীন হয়। উদাহরণস্বরূপ, eval()
দিয়ে ডিক্লেয়ার করা ভেরিয়েবলগুলি তার বাইরের স্কোপে প্রবেশ করবে না।
"use strict";
eval("var x = 5;");
console.log(x); // ReferenceError: x is not defined
এখানে, eval()
ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার করা হয়েছে, কিন্তু strict mode
এ এটি বাইরের স্কোপে অ্যাক্সেসযোগ্য হবে না।
this
এর আচরণstrict mode
এ, যদি একটি ফাংশনটি this
ব্যবহার করে তবে this
এর মান undefined
হবে, পরিবর্তে সাধারণ মোডে this
গ্লোবাল অবজেক্ট (যেমন window
বা global
) এর রেফারেন্স হবে।
"use strict";
function myFunction() {
console.log(this); // undefined
}
myFunction();
এখানে, strict mode
এ this
undefined থাকবে, কারণ এটি একটি ফাংশন কল হয়েছে গ্লোবাল স্কোপ থেকে। সাধারণ মোডে এটি গ্লোবাল অবজেক্টের রেফারেন্স হতে পারত।
strict mode
এ, আপনি এমন ভেরিয়েবলগুলিতে মান লিখতে পারবেন না যেগুলির read-only
বা immutable
(যেমন NaN
, Infinity
, অথবা undefined
) মান রয়েছে।
"use strict";
NaN = 10; // TypeError: Assignment to constant variable.
এখানে, NaN
কে পরিবর্তন করতে চাওয়ার কারণে ত্রুটি (error) সৃষ্টি হচ্ছে।
elete
অপারেটরstrict mode
এ, আপনি কোনো প্রপার্টি বা ভেরিয়েবল delete
অপারেটর দিয়ে মুছতে পারবেন না যদি তা শুধুমাত্র "ডাটা প্রপার্টি" না হয়।
"use strict";
delete Object.prototype; // TypeError: Cannot delete property 'prototype' of function Object() { [native code] }
এখানে, Object.prototype
মুছতে চাওয়ার কারণে ত্রুটি ঘটবে।
use strict
এর সুবিধাstrict mode
কোডের মধ্যে ত্রুটি দ্রুত শনাক্ত করতে সহায়তা করে।use strict
একটি শক্তিশালী বৈশিষ্ট্য যা জাভাস্ক্রিপ্টে কোডের সঠিকতা এবং নিরাপত্তা নিশ্চিত করতে সহায়তা করে। এটি বিভিন্ন ধরনের অবাঞ্ছিত আচরণকে নিষ্ক্রিয় করে এবং কোডের মধ্যে অপ্রত্যাশিত ত্রুটি ধরা সহজ করে। কোডের গুণগত মান এবং ভবিষ্যতের প্রস্তুতির জন্য এটি একটি গুরুত্বপূর্ণ টুল। use strict
ব্যবহারে কিছু সীমাবদ্ধতা এবং নতুন নিয়ম চালু হয়, যা ডেভেলপারদের কোড লিখতে আরো সচেতন করে তোলে।
common.read_more